Model Deployment হল একটি মেশিন লার্নিং বা ডিপ লার্নিং মডেলকে প্রোডাকশনে চালানোর প্রক্রিয়া, যাতে মডেলটি লাইভ সিস্টেমে ব্যবহার করা যায়। মডেল ডিপ্লয় করার জন্য সাধারণত REST APIs ব্যবহৃত হয়, যা বিভিন্ন প্ল্যাটফর্মে মডেলকে অ্যাক্সেস করার সুযোগ দেয়। এখানে আমরা দুটি জনপ্রিয় ওয়েব ফ্রেমওয়ার্ক Flask এবং FastAPI ব্যবহার করে কিভাবে মডেল ডিপ্লয় করা যায় তা দেখব।
Flask এবং FastAPI-তে Model Deployment
1. Flask ব্যবহার করে Model Deployment
Flask একটি জনপ্রিয় মাইক্রো ওয়েব ফ্রেমওয়ার্ক যা Python এ তৈরি। এটি দ্রুত API তৈরি এবং মডেল ডিপ্লয়মেন্টের জন্য বেশ কার্যকরী।
Step 1: Install Flask and Dependencies
প্রথমে Flask এবং প্রয়োজনীয় লাইব্রেরি ইনস্টল করুন:
pip install flask
pip install joblib # If you're using joblib to save your model
Step 2: Train and Save Your Model
এখন, একটি সাধারণ মেশিন লার্নিং মডেল ট্রেনিং করে সেটি সংরক্ষণ করুন। এখানে আমরা একটি scikit-learn মডেল ব্যবহার করব।
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import joblib
# Load dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3, random_state=42)
# Train a model
model = RandomForestClassifier()
model.fit(X_train, y_train)
# Save the model to a file
joblib.dump(model, 'model.pkl')
Step 3: Create Flask API for Model Deployment
Flask দিয়ে API তৈরি করুন, যাতে আপনার মডেলটি HTTP রিকোয়েস্টের মাধ্যমে অ্যাক্সেস করা যায়। এখানে একটি POST রিকোয়েস্ট দিয়ে আমরা মডেল প্রেডিকশন করব।
from flask import Flask, request, jsonify
import joblib
import numpy as np
app = Flask(__name__)
# Load the trained model
model = joblib.load('model.pkl')
# Define prediction route
@app.route('/predict', methods=['POST'])
def predict():
data = request.get_json(force=True)
# Extract input features
features = np.array(data['features']).reshape(1, -1)
# Predict with the model
prediction = model.predict(features)
return jsonify({'prediction': int(prediction[0])})
if __name__ == '__main__':
app.run(debug=True)
Step 4: Run Flask Application
ফ্লাস্ক অ্যাপ্লিকেশন চালানোর জন্য, টার্মিনাল থেকে নিচের কমান্ডটি চালান:
python app.py
এটি localhost:5000 এ আপনার API চালু করবে।
Step 5: Send a POST Request to the API
এখন, আপনি Postman বা curl ব্যবহার করে API রিকোয়েস্ট পাঠাতে পারেন। উদাহরণস্বরূপ:
curl -X POST -H "Content-Type: application/json" -d '{"features": [5.1, 3.5, 1.4, 0.2]}' http://localhost:5000/predict
এটি আপনার মডেল থেকে প্রেডিকশন পাবেন।
2. FastAPI ব্যবহার করে Model Deployment
FastAPI একটি আধুনিক, দ্রুত এবং টাইপ-সেফ ওয়েব ফ্রেমওয়ার্ক যা Flask থেকে আরও দ্রুত এবং আরও উন্নত পারফরম্যান্স প্রদান করে। এটি Python 3.6+ এবং async programming সমর্থন করে।
Step 1: Install FastAPI and Dependencies
FastAPI এবং uvicorn (যা FastAPI অ্যাপ্লিকেশন চালানোর জন্য ব্যবহৃত হয়) ইনস্টল করুন:
pip install fastapi
pip install uvicorn
pip install joblib
Step 2: Create FastAPI Application
FastAPI ব্যবহার করে API তৈরি করতে আমরা একইভাবে মডেলটি লোড এবং প্রেডিকশন সার্ভিস প্রদান করব:
from fastapi import FastAPI
from pydantic import BaseModel
import joblib
import numpy as np
# Define the input format for features
class Features(BaseModel):
features: list
# Initialize FastAPI
app = FastAPI()
# Load the trained model
model = joblib.load('model.pkl')
# Define prediction endpoint
@app.post('/predict')
def predict(data: Features):
# Extract features
features = np.array(data.features).reshape(1, -1)
# Make prediction
prediction = model.predict(features)
return {'prediction': int(prediction[0])}
Step 3: Run FastAPI Application
FastAPI অ্যাপ্লিকেশন চালানোর জন্য, uvicorn ব্যবহার করতে হবে। টার্মিনালে এই কমান্ডটি চালান:
uvicorn app:app --reload
এটি localhost:8000 এ আপনার API চালু করবে।
Step 4: Send a POST Request to the API
এখন, আপনি Postman বা curl ব্যবহার করে FastAPI অ্যাপ্লিকেশনকে POST রিকোয়েস্ট পাঠাতে পারেন:
curl -X POST -H "Content-Type: application/json" -d '{"features": [5.1, 3.5, 1.4, 0.2]}' http://localhost:8000/predict
এটি আপনার মডেল থেকে প্রেডিকশন পাবেন।
সারাংশ
- Flask এবং FastAPI হল দুটি জনপ্রিয় Python ফ্রেমওয়ার্ক যা মডেল ডিপ্লয় করার জন্য ব্যবহার করা যায়। Flask সহজ এবং হালকা, FastAPI আরও দ্রুত এবং টাইপ-সেফ।
- মডেল ডিপ্লয় করতে, প্রথমে মডেলটিকে ট্রেনিং করতে হবে এবং joblib বা pickle এর মাধ্যমে মডেলটি সংরক্ষণ করতে হবে।
- তারপর Flask বা FastAPI ব্যবহার করে একটি RESTful API তৈরি করতে হবে, যেখানে POST রিকোয়েস্টের মাধ্যমে মডেল প্রেডিকশন করা যাবে।
FastAPI অধিক কার্যকরী এবং দ্রুত পারফর্মেন্স প্রদান করলেও, Flask ছোট এবং সোজা API তৈরি করতে সহায়ক।
Read more